Hyperparameter Tuning হল মেশিন লার্নিং মডেলগুলির দক্ষতা বাড়ানোর একটি গুরুত্বপূর্ণ প্রক্রিয়া। এটি মডেলের hyperparameters-কে অপটিমাইজ করার প্রক্রিয়া, যা মডেল প্রশিক্ষণ বা পারফরম্যান্সের জন্য গুরুত্বপূর্ণ কনফিগারেশন প্যারামিটার। Hyperparameters হল সেই প্যারামিটারগুলি যা মডেল ট্রেনিংয়ের আগে নির্ধারণ করতে হয়, যেমন মডেলের আর্কিটেকচার, লার্নিং রেট, ন্যূনতম ব্যাচ সাইজ, এবং ড্রপআউট রেট।
এই tuning প্রক্রিয়া দুটি প্রধান পদ্ধতিতে করা হয়: Grid Search এবং Random Search।
Grid Search হল একটি exhaustive (সম্পূর্ণ) অনুসন্ধান কৌশল যেখানে বিভিন্ন hyperparameter এর একটি নির্দিষ্ট মানের জন্য মডেল প্রশিক্ষণ করা হয় এবং তারপরে সেরা কম্বিনেশন নির্বাচন করা হয়। এর মধ্যে আপনি যেসব hyperparameters ব্যবহার করতে চান, তাদের সব সম্ভাব্য মানের একটি গ্রিড তৈরি করেন এবং সেই অনুযায়ী মডেলটি প্রশিক্ষিত হয়।
ধরা যাক, আমাদের একটি মডেল এবং দুইটি hyperparameter (learning_rate
এবং batch_size
) পরীক্ষা করতে হবে।
from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier
# মডেল
model = RandomForestClassifier()
# Hyperparameter grid তৈরি
param_grid = {
'n_estimators': [100, 200, 300],
'max_depth': [10, 20, 30],
'min_samples_split': [2, 5, 10]
}
# GridSearchCV চালানো
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=3, n_jobs=-1, verbose=2)
# মডেল প্রশিক্ষণ
grid_search.fit(X_train, y_train)
# সেরা প্যারামিটার কম্বিনেশন
print(f"Best Parameters: {grid_search.best_params_}")
GridSearchCV সমস্ত সম্ভাব্য প্যারামিটার কম্বিনেশন পরীক্ষা করবে এবং সেরা পারফরম্যান্সের জন্য উপযুক্ত কম্বিনেশন নির্বাচন করবে।
Random Search হল একটি সমাধান যেখানে বিভিন্ন hyperparameters এর সম্ভাব্য মানের মধ্যে থেকে এলোমেলোভাবে কিছু মান নির্বাচন করা হয় এবং তার ওপর মডেলটি প্রশিক্ষিত হয়। এটি exhaustive নয়, তবে অনেক কম সময়ে ভাল ফলাফল পেতে সাহায্য করতে পারে।
from sklearn.model_selection import RandomizedSearchCV
from sklearn.ensemble import RandomForestClassifier
from scipy.stats import randint
# মডেল
model = RandomForestClassifier()
# Hyperparameter distribution তৈরি
param_dist = {
'n_estimators': randint(100, 1000),
'max_depth': [10, 20, 30, None],
'min_samples_split': randint(2, 10)
}
# RandomizedSearchCV চালানো
random_search = RandomizedSearchCV(estimator=model, param_distributions=param_dist, n_iter=100, cv=3, n_jobs=-1, verbose=2)
# মডেল প্রশিক্ষণ
random_search.fit(X_train, y_train)
# সেরা প্যারামিটার কম্বিনেশন
print(f"Best Parameters: {random_search.best_params_}")
RandomizedSearchCV এলোমেলোভাবে নির্দিষ্ট সংখ্যক পরীক্ষা করবে এবং সেরা প্যারামিটার নির্বাচন করবে।
বৈশিষ্ট্য | Grid Search | Random Search |
---|---|---|
পদ্ধতি | সমস্ত সম্ভাব্য মান পরীক্ষা করা হয় | এলোমেলোভাবে কিছু মান পরীক্ষা করা হয় |
সম্পূর্ণ পরীক্ষা | হ্যাঁ, সমস্ত প্যারামিটার কম্বিনেশন পরীক্ষা করা হয় | না, কিছু এলোমেলো নির্বাচন করা হয় |
কম্পিউটেশনাল খরচ | অনেক বেশি, কারণ সব কম্বিনেশন পরীক্ষা করতে হয় | কম, কারণ এলোমেলোভাবে কিছু কম্বিনেশন নির্বাচন করা হয় |
পারফরম্যান্স | সেরা পারফরম্যান্স দেয়, কারণ সমস্ত কম্বিনেশন পরীক্ষা করা হয় | দ্রুত, তবে সেরা ফলাফল না পাওয়া যেতে পারে |
গতি | ধীর, সময়সাপেক্ষ | দ্রুত, তবে কম্বিনেশন সীমিত |
Hyperparameter tuning হল মডেলটির দক্ষতা বৃদ্ধি করার একটি গুরুত্বপূর্ণ প্রক্রিয়া, এবং Grid Search এবং Random Search হল দুটি জনপ্রিয় কৌশল এই tuning করার জন্য। Grid Search সমস্ত সম্ভব সমন্বয় পরীক্ষা করে এবং সেরা প্যারামিটার নির্বাচন করে, তবে এটি computationally expensive এবং সময়সাপেক্ষ। অন্যদিকে, Random Search দ্রুত এবং কম্পিউটেশনাল খরচ কম হলেও এটি সবসময় সেরা প্যারামিটার প্রদান করতে পারে না।
Read more